function [cost] = myDTW(featureMatrix,RefMatrix)

%Date:23/10/08        
%Syntax:        cost = myDTW(featureMatrix,RefMatrix);


F       = featureMatrix;        
R       = RefMatrix;
[r1,c1] = size(F);              %dimensiones de la matriz de caracteristicas 
[r2,c2] = size(R);              %dimensiones de la matriz de la señal de entrada a reconocer
localDistance = zeros(r1,r2);   %Matriz para guardar los valores de distancia locales

%La matriz de distancia local se deriva abajo

for n=1:r1
    for m=1:r2
            FR=F(n,:)-R(m,:);
            FR=FR.^2;
            localDistance(n,m)=sqrt(sum(FR));
    end
end

D = zeros(r1+1,r2+1);   %Matriz de ceros para matriz de dist. local
D(1,:) = inf;           %Rellena arriba con valores horizontales(infinito)
D(:,1) = inf;           %idem. Rellena la izquierda
D(1,1) = 0;
D(2:(r1+1), 2:(r2+1)) = localDistance;


%Este loop itera a traves de la matriz de distancias para obtener la minima
%distancia

for i = 1:r1; 
    for j = 1:r2;
        [dmin]      = min([D(i, j), D(i, j+1), D(i+1, j)]);
        D(i+1,j+1)  = D(i+1,j+1)+dmin;
    end
end

%imagesc(D)



cost = D(r1+1,r2+1);    %devuelve el puntaje global minimo

